package com.demo.time;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.junit.Test;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Pattern;

public class TimeRecord {

    @Test
    public void calculateSecondInTwoTime() {
        // 定义日期时间格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");

        // 定义两个日期时间字符串
        String dateTimeStr1 = "2023-03-15 10:00";
        String dateTimeStr2 = "2023-03-15 12:30";

        // 将字符串解析为LocalDateTime对象
        LocalDateTime dateTime1 = LocalDateTime.parse(dateTimeStr1, formatter);
        LocalDateTime dateTime2 = LocalDateTime.parse(dateTimeStr2, formatter);

        // 计算两个日期时间之间的Duration
        Duration duration = Duration.between(dateTime1, dateTime2);

        // 获取Duration中的分钟数
        long minutes = duration.toMinutes();

        // 输出结果
        System.out.println("两个日期时间之间相差的分钟数: " + minutes);
    }

    //获取一个日期的整点00：00：00时间戳
    public static Long getStrDayIntegralTimestamp(Date inputDate) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(inputDate);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        long date = calendar.getTime().getTime();
        System.out.println(date);
        return date;

       /* // 假设这是你的日期字符串，格式为yyyy-MM-dd
        String dateString = "2024-04-20";

        // 定义日期格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");

        // 解析字符串为LocalDate
        LocalDateTime localDateTime = LocalDateTime.parse(dateString, formatter);

        // 设置为当天的00:00:00
        LocalDateTime startOfDay = localDateTime.withHour(0).withMinute(0).withSecond(0).withNano(0);

        // 转换为ZonedDateTime（如果需要特定时区，可以指定ZoneId）
        ZonedDateTime zonedDateTime = startOfDay.atZone(ZoneId.systemDefault());

        // 转换为时间戳（毫秒）
        long timestamp = zonedDateTime.toInstant().toEpochMilli();

        // 输出时间戳
        System.out.println("Timestamp: " + timestamp);
        return timestamp;*/


    }

    @Test
    public void calIntegral() {
        Long strDayIntegralTimestamp = getStrDayIntegralTimestamp(new Date());
    }


    @Test
    public void jsonParse() {
        String resp = "{\"code\":\"O3333333K\",\"data\":null,\"mes\":\"success\"}";
//        JSONObject jsonObject = JSON.parseObject(JSONObject.toJSONString(resp));
        ResultDTO resultDTO = JSONObject.parseObject(resp, ResultDTO.class);
        // 从JSONObject中获取值
//        String result = jsonObject.getString("code");
//        Object data = jsonObject.get("data"); // data可能是null
//        String mes = jsonObject.getString("mes");
        System.out.println(resultDTO.getCode());
    }

    @Test
    public void testFormat() {
        // 带小数的千分位分割
        BigDecimal bd = new BigDecimal(123456.456);
        DecimalFormat df = new DecimalFormat(",###.##");
        String format1 = df.format(bd);
        // 123,456.46       四舍五入
        System.out.println(format1);

        // 不带小数的千分位分割
        BigDecimal bigDecimal = new BigDecimal(1234567890);
        DecimalFormat decimalFormat = new DecimalFormat("###,###");
        String format = decimalFormat.format(bigDecimal);
        // 1,234,567,890
        System.out.println(format);


        // 原文链接：https://blog.csdn.net/suprezheng/article/details/88256041
    }


    @Test
    public void testEmail() {
        String emailRegular = "^([.a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\\.([a-zA-Z0-9_-])+)+$";
        String email = "jeff.lee@maclab.wynnmacau.com";
        if (!StringUtils.isEmpty(email)) {
            boolean systemSeriousNoticeFlag = Pattern.compile(emailRegular).matcher(email).matches();
            System.out.println("邮件校验结果+" + systemSeriousNoticeFlag);
        }
    }

    @Test
    public void isAllDigits() {
        // 使用正则表达式^\\d+$来匹配仅由数字组成的字符串
        // ^ 表示字符串的开始
        // \\d 表示任意数字（0-9）
        // + 表示前面的元素（在这里是\\d）可以出现一次或多次
        // $ 表示字符串的结束
        String str = "123458585\\";
        System.out.println(str.matches("^\\d+$"));

}




}
